<template>
	<div>
		<div class="h2">{{$route.query.SessionID?$route.query.Name+'审批流程管理':'社会实践审批流程管理'}}</div>
		<div id="components-form-demo-advanced-search">
			<a-form class="ant-advanced-search-form home-form" :form="form">
				<a-row :gutter="24">
					<a-col :span="8">
						<a-form-item label="维度">
							<a-select allowClear optionFilterProp="children" placeholder="请先选择维度" v-decorator="[`Type`]"
								@change="weiduChange">
								<template v-for="(item, index) in PracticeTeamData">
									<a-select-option :key="item.ID">{{ item.Name }}</a-select-option>
								</template>
							</a-select>
						</a-form-item>
					</a-col>

					<a-col :span="8">
						<a-form-item label="部门">
							<a-select :allowClear="true" v-decorator="['departCode']" placeholder="全部"
								optionFilterProp="children" showSearch>
								<a-select-option v-for="(item, index) in DepartCodeList" :key="index"
									:value="item.Code">{{ item.Name }}</a-select-option>
							</a-select>
						</a-form-item>

					</a-col>
					<a-col :span="8">
						<a-form-item label="实践类型">
							<!-- <a-select v-decorator="['ActivityFlowTypeID']" show-search :filter-option="filterOption"
								option-filter-prop="children" :autoClearSearchValue="false">
								<template v-for="(item, index) in ActivityFlowTypeList">
									<a-select-option :key="item.ID">{{ item.Name }}</a-select-option>
								</template>
							</a-select> -->
							<a-select :allowClear="true" v-decorator="['PracticeTeamTypeID']"  placeholder="全部"
								optionFilterProp="children" showSearch>
								<a-select-option v-for="(item, index) in TeamData" :key="index" :value="item.ID">
									{{ item.Name }}
								</a-select-option>
							</a-select>
						</a-form-item>
					</a-col>
					<a-col :span="16" style="margin-top: 4px;">
						<a-button-group size="default" class="option">
							<a-button type="primary" @click="handleSearch">搜索</a-button>
							<a-button @click="handleReset">重置</a-button>
							<a-button type="primary" @click="addList">新增</a-button>
						</a-button-group>
					</a-col>	
				</a-row>
			</a-form>
		</div>
		<div>
			<el-table :data="data" v-loading="loading" border :max-height="tableHeight" highlight-current-row
				style="width: 100%;">
				<el-table-column type="index" label="序号" width="60" fixed="left"></el-table-column>
				<el-table-column prop="PracticeTeamTypeName" label="实践类型" min-width="100"></el-table-column>
				<el-table-column prop="DepartName" label="部门" min-width="100"></el-table-column>
				<el-table-column prop="PracticeTeamFlowTypeName" label="审批节点" min-width="100"></el-table-column>
				<el-table-column label="操作" width="200" fixed="right">
					<template slot-scope="scope">
						<a-tooltip placement="top">
							<template slot="title">删除</template>
							<i title="删除" class="iconfont icon-delete" style="color: red;"
								@click="deleteList(scope.row)"></i>
						</a-tooltip>
						<a-tooltip placement="top" v-if="scope.$index != 0">
							<template slot="title">升序</template>
							<i title="升序" class="iconfont icon-paixu1" style="color: green;"
								@click="sortList(scope.row, 1)"></i>
						</a-tooltip>
						<a-tooltip placement="top" v-if="scope.$index != data.length - 1">
							<template slot="title">降序</template>
							<i title="降序" class="iconfont icon-paixu" style="color: brown;"
								@click="sortList(scope.row, 2)"></i>
						</a-tooltip>
					</template>
				</el-table-column>
			</el-table>
		</div>
		<add :SemesterList="SemesterList" :DepartCodeList="DepartCodeList"
		 :TeamData="TeamData"
		 :text="text" v-show="addIf"
			:activityLevelID="activityLevelID" :activityTypeID="activityTypeID" :ClubList="ClubList"
			:ClubTypeList="ClubTypeList" :clubID="clubID" :ClubTypeID="ClubTypeID"
			:ActivityFlowTypeList="currentActivityFlowTypeList" :ActivityTypeApplyList="ActivityTypeApplyList"
			:LevelList="LevelList" @closeFun="closeFun"></add>
	</div>
</template>

<script>
	import add from './add';
	import Func from '@/utils/func';
	import ClubSearch from '@/components/SearchForm/ClubSearch.vue'
	import {
		ManageApplyPracticeTeamFlowDoGetList,
		GetActivityTypeList,
		ManageApplyPracticeTeamFlowDoDelete,
		ManageApplyPracticeTeamFlowDoSort,
		CommonDoGetPracticeTeamFlowTypeTypeList,
		GetClubTypeList,
		GetActivityLevelListCommon,
		GetClubPageListCommon,
		CommonDoGetPracticeTeamTypeList,
		GetDepartList,
		DoGetSemesterListCommon
	} from '@/api/follow';
	const data = [];
	export default {
		components: {
			add,
			ClubSearch
		},
		data() {
			return {
				TeamData:[],
				SemesterList: [],
				DepartCodeList: [],
				PracticeTeamData: this.global.PracticeTeamData,
				activeLeaveStatus: true,
				weiduType: '1',
				weiduData: [{
						ID: '1',
						Name: '学生组织'
					},
					{
						ID: '2',
						Name: '学生组织类型'
					}
				],
				ActivityTypeApplyList: [],
				replaceFields: {
					children: 'children',
					title: 'title',
					key: 'ID',
					value: 'ID'
				},
				ClubTypeStatus: false,
				ClubStatus: false,
				data,
				form: this.$form.createForm(this, {
					name: 'advanced_search'
				}),
				pagination: {
					currentPage: 1,
					pageSize: this.global.pageSize,
					pageSizeOptions: this.global.pageSizeOptions, // 每页中显示的数据
					showTotal: total => `共有 ${total} 条数据` // 分页中显示总的数据
				},
				addIf: false,
				text: {},
				visible: false,
				confirmLoading: false,
				itemId: '',
				departmentList: [],
				worklist: [],
				loading: false,
				values: {},
				pages: {
					pageIndex: 1,
					pageSize: 20
				},
				tableHeight: parseFloat(window.innerHeight - 160),
				TeacherTypeList: this.global.TeacherTypeList,
				ActivityFlowTypeList: [],
				currentActivityFlowTypeList: [],
				ClubTypeList: [],
				ClubTypeID: '',
				ActivityTypeList: [],
				LevelList: [],
				ClubList: [],
				activityTypeID: "",
				clubID: '',
				activityLevelID: ''
			};
		},
		computed: {},
		created() {
			this.$nextTick(() => {
				this.form.setFieldsValue({
					Type: 1
				});
			})
			 this.getList();
			 this.getOtherList();
		},
		mounted() {},
		methods: {
			weiduChange(e) {
				console.log(e)
				let that = this;
				that.weiduType = e
				that.getList()
				this.getOtherList()

			},
			changelevel(e) {
				this.activityLevelID = e
				this.getList()
			},
			selectChangetree(e) {
				this.activityTypeID = e
				if (e != undefined) {
					this.activeLeaveStatus = false
				} else {
					this.activeLeaveStatus = true
				}

				this.getList();
			},
			handleReset() {
				this.form.resetFields();
				this.values = {};
				this.getList();
			},
			filterOption(input, option) {
				return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0;
			},
			async fetchClub(value) {
				let myReg = /^[^a-zA-Z]+$/;
				if (value && value.length > 1) {
					let data = {};
					data.key = value;
					let res = await GetClubPageListCommon(data);
					this.ClubList = res.data.data;
				}
			},
			searchValueFun(name, value) {
				this.values = {
					...this.values,
					[name]: value
				}
				if (value != '') {
					this.ClubTypeStatus = true
				} else {
					this.ClubTypeStatus = false
				}
			},
			async getOtherList() {
				let res7 = await CommonDoGetPracticeTeamTypeList();
				this.TeamData = res7.data.data;
				let res6 = await DoGetSemesterListCommon();
				this.SemesterList = res6.data.data;
				let res10 = await GetDepartList();
				this.DepartCodeList = res10.data.data;
				let res = await CommonDoGetPracticeTeamFlowTypeTypeList({type:this.weiduType});
				this.ActivityFlowTypeList = res.data.data;
				

			},
			toTree(data) {
				let result = [];
				let map = {};
				if (!Array.isArray(data)) {
					return [];
				}
				data.forEach(item => {
					map[item.ID] = item;
				});
				data.forEach(item => {
					let parent = map[item.ParentID];
					if (parent) {
						(parent.children || (parent.children = [])).push(item);
					} else {
						result.push(item);
					}
				});
				return result;
			},
			selectChange(e) {
				console.log(e);

				this.ClubTypeID = e
				// if(e!=undefined){
				// 	this.ClubStatus=false
				// }else{
				// 	this.ClubStatus=true
				// }
				if (e != undefined) {
					this.activeLeaveStatus = false
					this.getList(e);
				} else {
					this.data = data
					this.activeLeaveStatus = true
				}


			},
			selectChange2(e) {

				this.clubID = e
				if (e != undefined) {
					this.activeLeaveStatus = false
					this.getList(e);
				} else {
					this.data = data
					this.activeLeaveStatus = true
				}
				// this.getList()
				// if(e!=undefined){
				// 	this.ClubTypeStatus=false
				// }else{
				// 	this.ClubTypeStatus=true
				// }
			},
			handleSearch(e) {
				this.form.validateFields((error, values) => {
					if (!error) {
						this.pagination.currentPage = 1;
						this.values = values;
						this.getList();
					}
				});
			},
			handleSizeChange(val) {
				this.pagination.pageSize = val;
				this.getList();
			},
			handleCurrentChange(val) {
				this.pagination.currentPage = val;
				this.getList();
			},
			async getList(id) {
				this.loading = true;
				let data = {};
				data=this.values;
				data.type = this.weiduType;
				data.sessionID=this.$route.query.SessionID||''
				let res = await ManageApplyPracticeTeamFlowDoGetList(data);
				this.loading = false;
				this.data = res.data.data;
			},
			addList() {
				this.form.validateFields((error, values) => {
					if (!error) {
						this.values = values;
						console.log(this.values);
						this.text = {};
						this.ClubTypeID = values.ClubTypeID
						this.clubID = values.clubID
						this.activityLevelID = values.activityLevelID
						this.activityTypeID = values.activityTypeID
						if (this.ClubTypeID == 'Class') {
							this.currentActivityFlowTypeList = this.ActivityFlowTypeList.filter((m, i) => m
								.IsTeacherExam == false)
						} else {
							this.currentActivityFlowTypeList = this.ActivityFlowTypeList
						}
						this.addIf = !this.addIf;
					}
				});
			},
			modifyList(text) {
				text = {
					...text,
					time: new Date()
				}
				this.addIf = !this.addIf;
				this.text = text;
			},
			deleteList(text) {
				let that = this;
				this.$confirm({
					title: '提示',
					content: `您确定删除该审批流程吗？`,
					okText: '确认',
					cancelText: '取消',
					async onOk() {
						let data = {};
						data.id = text.ID;
						let res = await ManageApplyPracticeTeamFlowDoDelete(data);
						if (res.data.code == 0) {
							that.getList(that.ClubTypeID);
							that.$message.success(res.data.msg);
						} else {
							that.$message.error(res.data.msg);
						}
					}
				});
			},
			async sortList(text, type) {
				// 1=向上 2=向下
				let data = {};
				data.id = text.ID;
				data.type = type;
				let res = await ManageApplyPracticeTeamFlowDoSort(data);
				if (res.data.code == 0) {
					this.getList(this.ClubTypeID);
					this.$message.success(res.data.msg);
				} else {
					this.$message.error(res.data.msg);
				}
			},
			closeFun(data) {
				this.addIf = false;
				if (data == 1) {
					this.getList(this.ClubTypeID);
				}
			}
		}
	};
</script>

<style lang="less" scoped>
	.home-form /deep/.ant-form-item {
		display: flex;
		margin-bottom: 10px !important;
	}

	.home-form /deep/.ant-form-item-label {
		width: 110px;
		overflow: hidden;
		white-space: nowrap;
		text-overflow: ellipsis;
		text-align: right;
	}

	.home-form /deep/.ant-form-item-control-wrapper {
		flex: 1;
	}

	/deep/.el-table th.is-leaf {
		background: #fafafa;
	}

	/deep/.el-table td,
	/deep/.el-table th {
		padding: 5px;
	}

	.option {
		margin-top: 10px;
		margin-bottom: 20px;
		overflow: hidden;
	}

	.option .btn {
		height: 36px;
		line-height: 36px;
		padding: 0 10px;
		float: left;
		background: #1890ff;
		color: #fff;
		margin-right: 10px;
		border-radius: 3px;
		cursor: pointer;
		border: none;
	}

	.foot {
		text-align: center;
		margin-top: 100px;
	}

	.el-pagination {
		margin-top: 10px;
	}

	/deep/ .ant-form-item-control-wrapper {
		min-width: 200px;
	}
</style>
